package org.xx.armory.objectparser;

import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;

/**
 * 定义解析源码的功能。
 *
 * @author Haart
 */
public interface SourceFileParser<T extends ParsedObject> {
    /**
     * 解析源文件。
     *
     * @param fileName
     *         待解析的文件名。
     * @param c
     *         用于存放解析得到的元素的集合。
     * @throws IOException
     *         操作流时出现错误。
     */
    void parse(
            String fileName,
            Collection<? super T> c
    )
            throws IOException;

    /**
     * 解析源文件。
     *
     * @param stream
     *         待解析的输入流。
     * @param c
     *         用于存放解析得到的元素的集合。
     * @throws IOException
     *         操作流时出现错误。
     */
    void parse(
            InputStream stream,
            Collection<? super T> c
    )
            throws IOException;
}
